package com.wing.file.service;

import com.wing.file.model.response.FileVO;
import org.springframework.web.multipart.MultipartFile;

import java.awt.*;
import java.io.File;

/**
 * 文件-Service
 *
 * @author
 */
public interface FileService {

    /**
     * 保存文件
     *
     * @param file 文件
     * @return {@link FileVO}
     */
    FileVO saveFile(MultipartFile file);

    /**
     * 缓存图片
     *
     * @param file 文件
     * @return {@link FileVO}
     */
    FileVO saveTempImage(MultipartFile file);

    /**
     * 保存图片
     *
     * @param file 文件
     * @return {@link FileVO}
     */
    FileVO saveImage(MultipartFile file);

    /**
     * 保存图片
     *
     * @param file 文件
     * @return {@link FileVO}
     */
    FileVO saveImage(File file);

    /**
     * 保存图片
     *
     * @param image 图像
     * @return {@link FileVO}
     */
    FileVO saveImage(Image image);

    /**
     * 保存文件
     *
     * @param file 文件
     * @return {@link FileVO}
     */
    FileVO saveFile(File file);

    /**
     * 字符串转文件
     *
     * @param name    名字
     * @param content 内容
     * @return {@link FileVO}
     */
    FileVO stringToFile(String name, String content);

    /**
     * 字符串来覆盖文件
     * 字符串修改文件
     *
     * @param path    路径
     * @param content 内容
     * @return {@link FileVO}
     */
    boolean stringToOverrideFile(String path, String content);

    /**
     * Base64转图片
     *
     * @param base64 Base64字符串
     * @return {@link FileVO}
     */
    FileVO base64ToImage(String base64);

    /**
     * Base64覆盖图片
     *
     * @param path   路径
     * @param base64 Base64字符串
     * @return {@link FileVO}
     */
    boolean base64ToOverrideImage(String path, String base64);

    /**
     * 缓存文件持久化
     *
     * @param path
     * @return
     */
    Boolean tempToFile(String path);

    /**
     * 删除文件
     *
     * @param path
     * @return
     */
    Boolean delete(String path);

}
